#ifndef _LAPACK_H_
#define _LAPACK_H_

#include "blas.h"

extern "C"
{
  void cbdsqr_(char *uplo, lint *n, lint *ncvt, lint *nru, lint *ncc, float *d, float *e, cpx8 *vt, lint *ldvt, cpx8 *u, lint *ldu, cpx8 *c, lint *ldc, float *rwork, lint *info);
  void cgbbrd_(char *vect, lint *m, lint *n, lint *ncc, lint *kl, lint *ku, cpx8 *ab, lint *ldab, float *d, float *e, cpx8 *q, lint *ldq, cpx8 *pt, lint *ldpt, cpx8 *c, lint *ldc, cpx8 *work, float *rwork, lint *info);
  void cgbcon_(char *norm, lint *n, lint *kl, lint *ku, cpx8 *ab, lint *ldab, lint *ipiv, float *anorm, float *rcond, cpx8 *work, float *rwork, lint *info);
  void cgbequ_(lint *m, lint *n, lint *kl, lint *ku, cpx8 *ab, lint *ldab, float *r, float *c, float *rowcnd, float *colcnd, float *amax, lint *info);
  void cgbrfs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *afb, lint *ldafb, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgbsv_(lint *n, lint *kl, lint *ku, lint *nrhs, cpx8 *ab, lint *ldab, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void cgbsvx_(char *fact, char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *afb, lint *ldafb, lint *ipiv, char *equed, float *r, float *c, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgbtf2_(lint *m, lint *n, lint *kl, lint *ku, cpx8 *ab, lint *ldab, lint *ipiv, lint *info);
  void cgbtrf_(lint *m, lint *n, lint *kl, lint *ku, cpx8 *ab, lint *ldab, lint *ipiv, lint *info);
  void cgbtrs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx8 *ab, lint *ldab, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void cgebak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, float *scale, lint *m, cpx8 *v, lint *ldv, lint *info);
  void cgebal_(char *job, lint *n, cpx8 *a, lint *lda, lint *ilo, lint *ihi, float *scale, lint *info);
  void cgebd2_(lint *m, lint *n, cpx8 *a, lint *lda, float *d, float *e, cpx8 *tauq, cpx8 *taup, cpx8 *work, lint *info);
  void cgebrd_(lint *m, lint *n, cpx8 *a, lint *lda, float *d, float *e, cpx8 *tauq, cpx8 *taup, cpx8 *work, lint *lwork, lint *info);
  void cgecon_(char *norm, lint *n, cpx8 *a, lint *lda, float *anorm, float *rcond, cpx8 *work, float *rwork, lint *info);
  void cgeequ_(lint *m, lint *n, cpx8 *a, lint *lda, float *r, float *c, float *rowcnd, float *colcnd, float *amax, lint *info);
  void cgees_(char *jobvs, char *sort, lint *select, lint *n, cpx8 *a, lint *lda, lint *sdim, cpx8 *w, cpx8 *vs, lint *ldvs, cpx8 *work, lint *lwork, float *rwork, lint *bwork, lint *info);
  void cgeesx_(char *jobvs, char *sort, lint *select, char *sense, lint *n, cpx8 *a, lint *lda, lint *sdim, cpx8 *w, cpx8 *vs, lint *ldvs, float *rconde, float *rcondv, cpx8 *work, lint *lwork, float *rwork, lint *bwork, lint *info);
  void cgeev_(char *jobvl, char *jobvr, lint *n, cpx8 *a, lint *lda, cpx8 *w, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgeevx_(char *balanc, char *jobvl, char *jobvr, char *sense, lint *n, cpx8 *a, lint *lda, cpx8 *w, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, lint *ilo, lint *ihi, float *scale, float *abnrm, float *rconde, float *rcondv, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgegs_(char *jobvsl, char *jobvsr, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *alpha, cpx8 *beta, cpx8 *vsl, lint *ldvsl, cpx8 *vsr, lint *ldvsr, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgegv_(char *jobvl, char *jobvr, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *alpha, cpx8 *beta, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgehd2_(lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cgehrd_(lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cgelq2_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cgelqf_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cgels_(char *trans, lint *m, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *work, lint *lwork, lint *info);
  void cgelss_(lint *m, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, float *s, float *rcond, lint *rank, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgelsx_(lint *m, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *jpvt, float *rcond, lint *rank, cpx8 *work, float *rwork, lint *info);
  void cgeql2_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cgeqlf_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cgeqr2_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cgeqrf_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cgerfs_(char *trans, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgerq2_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cgerqf_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cgesv_(lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void cgesvd_(char *jobu, char *jobvt, lint *m, lint *n, cpx8 *a, lint *lda, float *s, cpx8 *u, lint *ldu, cpx8 *vt, lint *ldvt, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cgesvx_(char *fact, char *trans, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, char *equed, float *r, float *c, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgetf2_(lint *m, lint *n, cpx8 *a, lint *lda, lint *ipiv, lint *info);
  void cgetrf_(lint *m, lint *n, cpx8 *a, lint *lda, lint *ipiv, lint *info);
  void cgetri_(lint *n, cpx8 *a, lint *lda, lint *ipiv, cpx8 *work, lint *lwork, lint *info);
  void cgetrs_(char *trans, lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void cggbak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, float *lscale, float *rscale, lint *m, cpx8 *v, lint *ldv, lint *info);
  void cggbal_(char *job, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *ilo, lint *ihi, float *lscale, float *rscale, float *work, lint *info);
  void cggglm_(lint *n, lint *m, lint *p, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *d, cpx8 *x, cpx8 *y, cpx8 *work, lint *lwork, lint *info);
  void cgghrd_(char *compq, char *compz, lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *q, lint *ldq, cpx8 *z, lint *ldz, lint *info);
  void cgglse_(lint *m, lint *n, lint *p, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *c, cpx8 *d, cpx8 *x, cpx8 *work, lint *lwork, lint *info);
  void cggqrf_(lint *n, lint *m, lint *p, cpx8 *a, lint *lda, cpx8 *taua, cpx8 *b, lint *ldb, cpx8 *taub, cpx8 *work, lint *lwork, lint *info);
  void cggrqf_(lint *m, lint *p, lint *n, cpx8 *a, lint *lda, cpx8 *taua, cpx8 *b, lint *ldb, cpx8 *taub, cpx8 *work, lint *lwork, lint *info);
  void cggsvd_(char *jobu, char *jobv, char *jobq, lint *m, lint *n, lint *p, lint *k, lint *l, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, float *alpha, float *beta, cpx8 *u, lint *ldu, cpx8 *v, lint *ldv, cpx8 *q, lint *ldq, cpx8 *work, float *rwork, lint *iwork, lint *info);
  void cggsvp_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, float *tola, float *tolb, lint *k, lint *l, cpx8 *u, lint *ldu, cpx8 *v, lint *ldv, cpx8 *q, lint *ldq, lint *iwork, float *rwork, cpx8 *tau, cpx8 *work, lint *info);
  void cgtcon_(char *norm, lint *n, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *du2, lint *ipiv, float *anorm, float *rcond, cpx8 *work, lint *info);
  void cgtrfs_(char *trans, lint *n, lint *nrhs, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *dlf, cpx8 *df, cpx8 *duf, cpx8 *du2, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgtsv_(lint *n, lint *nrhs, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *b, lint *ldb, lint *info);
  void cgtsvx_(char *fact, char *trans, lint *n, lint *nrhs, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *dlf, cpx8 *df, cpx8 *duf, cpx8 *du2, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cgttrf_(lint *n, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *du2, lint *ipiv, lint *info);
  void cgttrs_(char *trans, lint *n, lint *nrhs, cpx8 *dl, cpx8 *d, cpx8 *du, cpx8 *du2, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void chbev_(char *jobz, char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *info);
  void chbevd_(char *jobz, char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *w, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, float *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void chbevx_(char *jobz, char *range, char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, cpx8 *q, lint *ldq, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *iwork, lint *ifail, lint *info);
  void chbgst_(char *vect, char *uplo, lint *n, lint *ka, lint *kb, cpx8 *ab, lint *ldab, cpx8 *bb, lint *ldbb, cpx8 *x, lint *ldx, cpx8 *work, float *rwork, lint *info);
  void chbgv_(char *jobz, char *uplo, lint *n, lint *ka, lint *kb, cpx8 *ab, lint *ldab, cpx8 *bb, lint *ldbb, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *info);
  void chbtrd_(char *vect, char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *d, float *e, cpx8 *q, lint *ldq, cpx8 *work, lint *info);
  void checon_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, float *anorm, float *rcond, cpx8 *work, lint *info);
  void cheev_(char *jobz, char *uplo, lint *n, cpx8 *a, lint *lda, float *w, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cheevd_(char *jobz, char *uplo, lint *n, cpx8 *a, lint *lda, float *w, cpx8 *work, lint *lwork, float *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void cheevx_(char *jobz, char *range, char *uplo, lint *n, cpx8 *a, lint *lda, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, float *rwork, lint *iwork, lint *ifail, lint *info);
  void chegs2_(lint *itype, char *uplo, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *info);
  void chegst_(lint *itype, char *uplo, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *info);
  void chegv_(lint *itype, char *jobz, char *uplo, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, float *w, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void cherfs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void chesv_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *work, lint *lwork, lint *info);
  void chesvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void chetd2_(char *uplo, lint *n, cpx8 *a, lint *lda, float *d, float *e, cpx8 *tau, lint *info);
  void chetf2_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, lint *info);
  void chetrd_(char *uplo, lint *n, cpx8 *a, lint *lda, float *d, float *e, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void chetrf_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, cpx8 *work, lint *lwork, lint *info);
  void chetri_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, cpx8 *work, lint *info);
  void chetrs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void chgeqz_(char *job, char *compq, char *compz, lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *alpha, cpx8 *beta, cpx8 *q, lint *ldq, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void chpcon_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, float *anorm, float *rcond, cpx8 *work, lint *info);
  void chpev_(char *jobz, char *uplo, lint *n, cpx8 *ap, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *info);
  void chpevd_(char *jobz, char *uplo, lint *n, cpx8 *ap, float *w, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, float *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void chpevx_(char *jobz, char *range, char *uplo, lint *n, cpx8 *ap, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *iwork, lint *ifail, lint *info);
  void chpgst_(lint *itype, char *uplo, lint *n, cpx8 *ap, cpx8 *bp, lint *info);
  void chpgv_(lint *itype, char *jobz, char *uplo, lint *n, cpx8 *ap, cpx8 *bp, float *w, cpx8 *z, lint *ldz, cpx8 *work, float *rwork, lint *info);
  void chprfs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void chpsv_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void chpsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void chptrd_(char *uplo, lint *n, cpx8 *ap, float *d, float *e, cpx8 *tau, lint *info);
  void chptrf_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, lint *info);
  void chptri_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, cpx8 *work, lint *info);
  void chptrs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void chsein_(char *side, char *eigsrc, char *initv, lint *select, lint *n, cpx8 *h, lint *ldh, cpx8 *w, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, lint *mm, lint *m, cpx8 *work, float *rwork, lint *ifaill, lint *ifailr, lint *info);
  void chseqr_(char *job, char *compz, lint *n, lint *ilo, lint *ihi, cpx8 *h, lint *ldh, cpx8 *w, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, lint *info);
  void claed0_(lint *qsiz, lint *n, float *d, float *e, cpx8 *q, lint *ldq, cpx8 *qstore, lint *ldqs, float *rwork, lint *iwork, lint *info);
  void claed7_(lint *n, lint *cutpnt, lint *qsiz, lint *tlvls, lint *curlvl, lint *curpbm, float *d, cpx8 *q, lint *ldq, float *rho, lint *indxq, float *qstore, lint *qptr, lint *prmptr, lint *perm, lint *givptr, lint *givcol, float *givnum, cpx8 *work, float *rwork, lint *iwork, lint *info);
  void claed8_(lint *k, lint *n, lint *qsiz, cpx8 *q, lint *ldq, float *d, float *rho, lint *cutpnt, float *z, float *dlamda, cpx8 *q2, lint *ldq2, float *w, lint *indxp, lint *indx, lint *indxq, lint *perm, lint *givptr, lint *givcol, float *givnum, lint *info);
  void clahef_(char *uplo, lint *n, lint *nb, lint *kb, cpx8 *a, lint *lda, lint *ipiv, cpx8 *w, lint *ldw, lint *info);
  void clasyf_(char *uplo, lint *n, lint *nb, lint *kb, cpx8 *a, lint *lda, lint *ipiv, cpx8 *w, lint *ldw, lint *info);
  void clatzm_(char *side, lint *m, lint *n, cpx8 *v, lint *incv, cpx8 *tau, cpx8 *c1, cpx8 *c2, lint *ldc, cpx8 *work);
  void cpbcon_(char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *anorm, float *rcond, cpx8 *work, float *rwork, lint *info);
  void cpbequ_(char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *s, float *scond, float *amax, lint *info);
  void cpbrfs_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *afb, lint *ldafb, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cpbstf_(char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, lint *info);
  void cpbsv_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *b, lint *ldb, lint *info);
  void cpbsvx_(char *fact, char *uplo, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *afb, lint *ldafb, char *equed, float *s, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cpbtf2_(char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, lint *info);
  void cpbtrf_(char *uplo, lint *n, lint *kd, cpx8 *ab, lint *ldab, lint *info);
  void cpbtrs_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *b, lint *ldb, lint *info);
  void cpocon_(char *uplo, lint *n, cpx8 *a, lint *lda, float *anorm, float *rcond, cpx8 *work, float *rwork, lint *info);
  void cpoequ_(lint *n, cpx8 *a, lint *lda, float *s, float *scond, float *amax, lint *info);
  void cporfs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cposv_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *info);
  void cposvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, char *equed, float *s, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cpotf2_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *info);
  void cpotrf_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *info);
  void cpotri_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *info);
  void cpotrs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *info);
  void cppcon_(char *uplo, lint *n, cpx8 *ap, float *anorm, float *rcond, cpx8 *work, float *rwork, lint *info);
  void cppequ_(char *uplo, lint *n, cpx8 *ap, float *s, float *scond, float *amax, lint *info);
  void cpprfs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cppsv_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *b, lint *ldb, lint *info);
  void cppsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, char *equed, float *s, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cpptrf_(char *uplo, lint *n, cpx8 *ap, lint *info);
  void cpptri_(char *uplo, lint *n, cpx8 *ap, lint *info);
  void cpptrs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *b, lint *ldb, lint *info);
  void cptcon_(lint *n, float *d, cpx8 *e, float *anorm, float *rcond, float *rwork, lint *info);
  void cpteqr_(char *compz, lint *n, float *d, float *e, cpx8 *z, lint *ldz, float *work, lint *info);
  void cptrfs_(char *uplo, lint *n, lint *nrhs, float *d, cpx8 *e, float *df, cpx8 *ef, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cptsv_(lint *n, lint *nrhs, float *d, cpx8 *e, cpx8 *b, lint *ldb, lint *info);
  void cptsvx_(char *fact, lint *n, lint *nrhs, float *d, cpx8 *e, float *df, cpx8 *ef, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cpttrf_(lint *n, float *d, cpx8 *e, lint *info);
  void cpttrs_(char *uplo, lint *n, lint *nrhs, float *d, cpx8 *e, cpx8 *b, lint *ldb, lint *info);
  void cspcon_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, float *anorm, float *rcond, cpx8 *work, lint *info);
  void csprfs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void cspsv_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void cspsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *ap, cpx8 *afp, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void csptrf_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, lint *info);
  void csptri_(char *uplo, lint *n, cpx8 *ap, lint *ipiv, cpx8 *work, lint *info);
  void csptrs_(char *uplo, lint *n, lint *nrhs, cpx8 *ap, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void csrot_(lint *n, cpx8 *cx, lint *incx, cpx8 *cy, lint *incy, float *c, float *s);
  void cstedc_(char *compz, lint *n, float *d, float *e, cpx8 *z, lint *ldz, cpx8 *work, lint *lwork, float *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void cstein_(lint *n, float *d, float *e, lint *m, float *w, lint *iblock, lint *isplit, cpx8 *z, lint *ldz, float *work, lint *iwork, lint *ifail, lint *info);
  void csteqr_(char *compz, lint *n, float *d, float *e, cpx8 *z, lint *ldz, float *work, lint *info);
  void csycon_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, float *anorm, float *rcond, cpx8 *work, lint *info);
  void csyrfs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void csysv_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *work, lint *lwork, lint *info);
  void csysvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *af, lint *ldaf, lint *ipiv, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *rcond, float *ferr, float *berr, cpx8 *work, lint *lwork, float *rwork, lint *info);
  void csytf2_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, lint *info);
  void csytrf_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, cpx8 *work, lint *lwork, lint *info);
  void csytri_(char *uplo, lint *n, cpx8 *a, lint *lda, lint *ipiv, cpx8 *work, lint *info);
  void csytrs_(char *uplo, lint *n, lint *nrhs, cpx8 *a, lint *lda, lint *ipiv, cpx8 *b, lint *ldb, lint *info);
  void ctbcon_(char *norm, char *uplo, char *diag, lint *n, lint *kd, cpx8 *ab, lint *ldab, float *rcond, cpx8 *work, float *rwork, lint *info);
  void ctbrfs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void ctbtrs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, cpx8 *ab, lint *ldab, cpx8 *b, lint *ldb, lint *info);
  void ctgevc_(char *side, char *howmny, lint *select, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, lint *mm, lint *m, cpx8 *work, float *rwork, lint *info);
  void ctgsja_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, lint *k, lint *l, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, float *tola, float *tolb, float *alpha, float *beta, cpx8 *u, lint *ldu, cpx8 *v, lint *ldv, cpx8 *q, lint *ldq, cpx8 *work, lint *ncycle, lint *info);
  void ctpcon_(char *norm, char *uplo, char *diag, lint *n, cpx8 *ap, float *rcond, cpx8 *work, float *rwork, lint *info);
  void ctprfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx8 *ap, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void ctptri_(char *uplo, char *diag, lint *n, cpx8 *ap, lint *info);
  void ctptrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx8 *ap, cpx8 *b, lint *ldb, lint *info);
  void ctrcon_(char *norm, char *uplo, char *diag, lint *n, cpx8 *a, lint *lda, float *rcond, cpx8 *work, float *rwork, lint *info);
  void ctrevc_(char *side, char *howmny, lint *select, lint *n, cpx8 *t, lint *ldt, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, lint *mm, lint *m, cpx8 *work, float *rwork, lint *info);
  void ctrexc_(char *compq, lint *n, cpx8 *t, lint *ldt, cpx8 *q, lint *ldq, lint *ifst, lint *ilst, lint *info);
  void ctrrfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *x, lint *ldx, float *ferr, float *berr, cpx8 *work, float *rwork, lint *info);
  void ctrsen_(char *job, char *compq, lint *select, lint *n, cpx8 *t, lint *ldt, cpx8 *q, lint *ldq, cpx8 *w, lint *m, float *s, float *sep, cpx8 *work, lint *lwork, lint *info);
  void ctrsna_(char *job, char *howmny, lint *select, lint *n, cpx8 *t, lint *ldt, cpx8 *vl, lint *ldvl, cpx8 *vr, lint *ldvr, float *s, float *sep, lint *mm, lint *m, cpx8 *work, lint *ldwork, float *rwork, lint *info);
  void ctrsyl_(char *trana, char *tranb, lint *isgn, lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, cpx8 *c, lint *ldc, float *scale, lint *info);
  void ctrti2_(char *uplo, char *diag, lint *n, cpx8 *a, lint *lda, lint *info);
  void ctrtri_(char *uplo, char *diag, lint *n, cpx8 *a, lint *lda, lint *info);
  void ctrtrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx8 *a, lint *lda, cpx8 *b, lint *ldb, lint *info);
  void ctzrqf_(lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, lint *info);
  void cung2l_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cung2r_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cungbr_(char *vect, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cunghr_(lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cungl2_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cunglq_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cungql_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cungqr_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cungr2_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *info);
  void cungrq_(lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cungtr_(char *uplo, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *work, lint *lwork, lint *info);
  void cunm2l_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *info);
  void cunm2r_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *info);
  void cunmbr_(char *vect, char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunmhr_(char *side, char *trans, lint *m, lint *n, lint *ilo, lint *ihi, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunml2_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *info);
  void cunmlq_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunmql_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunmqr_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunmr2_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *info);
  void cunmrq_(char *side, char *trans, lint *m, lint *n, lint *k, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cunmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, cpx8 *a, lint *lda, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *lwork, lint *info);
  void cupgtr_(char *uplo, lint *n, cpx8 *ap, cpx8 *tau, cpx8 *q, lint *ldq, cpx8 *work, lint *info);
  void cupmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, cpx8 *ap, cpx8 *tau, cpx8 *c, lint *ldc, cpx8 *work, lint *info);
  void sbdsqr_(char *uplo, lint *n, lint *ncvt, lint *nru, lint *ncc, float *d, float *e, float *vt, lint *ldvt, float *u, lint *ldu, float *c, lint *ldc, float *work, lint *info);
  void sdisna_(char *job, lint *m, lint *n, float *d, float *sep, lint *info);
  void sgbbrd_(char *vect, lint *m, lint *n, lint *ncc, lint *kl, lint *ku, float *ab, lint *ldab, float *d, float *e, float *q, lint *ldq, float *pt, lint *ldpt, float *c, lint *ldc, float *work, lint *info);
  void sgbcon_(char *norm, lint *n, lint *kl, lint *ku, float *ab, lint *ldab, lint *ipiv, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void sgbequ_(lint *m, lint *n, lint *kl, lint *ku, float *ab, lint *ldab, float *r, float *c, float *rowcnd, float *colcnd, float *amax, lint *info);
  void sgbrfs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, float *ab, lint *ldab, float *afb, lint *ldafb, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgbsv_(lint *n, lint *kl, lint *ku, lint *nrhs, float *ab, lint *ldab, lint *ipiv, float *b, lint *ldb, lint *info);
  void sgbsvx_(char *fact, char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, float *ab, lint *ldab, float *afb, lint *ldafb, lint *ipiv, char *equed, float *r, float *c, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgbtf2_(lint *m, lint *n, lint *kl, lint *ku, float *ab, lint *ldab, lint *ipiv, lint *info);
  void sgbtrf_(lint *m, lint *n, lint *kl, lint *ku, float *ab, lint *ldab, lint *ipiv, lint *info);
  void sgbtrs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, float *ab, lint *ldab, lint *ipiv, float *b, lint *ldb, lint *info);
  void sgebak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, float *scale, lint *m, float *v, lint *ldv, lint *info);
  void sgebal_(char *job, lint *n, float *a, lint *lda, lint *ilo, lint *ihi, float *scale, lint *info);
  void sgebd2_(lint *m, lint *n, float *a, lint *lda, float *d, float *e, float *tauq, float *taup, float *work, lint *info);
  void sgebrd_(lint *m, lint *n, float *a, lint *lda, float *d, float *e, float *tauq, float *taup, float *work, lint *lwork, lint *info);
  void sgecon_(char *norm, lint *n, float *a, lint *lda, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void sgeequ_(lint *m, lint *n, float *a, lint *lda, float *r, float *c, float *rowcnd, float *colcnd, float *amax, lint *info);
  void sgees_(char *jobvs, char *sort, lint *select, lint *n, float *a, lint *lda, lint *sdim, float *wr, float *wi, float *vs, lint *ldvs, float *work, lint *lwork, lint *bwork, lint *info);
  void sgeesx_(char *jobvs, char *sort, lint *select, char *sense, lint *n, float *a, lint *lda, lint *sdim, float *wr, float *wi, float *vs, lint *ldvs, float *rconde, float *rcondv, float *work, lint *lwork, lint *iwork, lint *liwork, lint *bwork, lint *info);
  void sgeev_(char *jobvl, char *jobvr, lint *n, float *a, lint *lda, float *wr, float *wi, float *vl, lint *ldvl, float *vr, lint *ldvr, float *work, lint *lwork, lint *info);
  void sgeevx_(char *balanc, char *jobvl, char *jobvr, char *sense, lint *n, float *a, lint *lda, float *wr, float *wi, float *vl, lint *ldvl, float *vr, lint *ldvr, lint *ilo, lint *ihi, float *scale, float *abnrm, float *rconde, float *rcondv, float *work, lint *lwork, lint *iwork, lint *info);
  void sgegs_(char *jobvsl, char *jobvsr, lint *n, float *a, lint *lda, float *b, lint *ldb, float *alphar, float *alphai, float *beta, float *vsl, lint *ldvsl, float *vsr, lint *ldvsr, float *work, lint *lwork, lint *info);
  void sgegv_(char *jobvl, char *jobvr, lint *n, float *a, lint *lda, float *b, lint *ldb, float *alphar, float *alphai, float *beta, float *vl, lint *ldvl, float *vr, lint *ldvr, float *work, lint *lwork, lint *info);
  void sgehd2_(lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *tau, float *work, lint *info);
  void sgehrd_(lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sgelq2_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *info);
  void sgelqf_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sgels_(char *trans, lint *m, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, float *work, lint *lwork, lint *info);
  void sgelss_(lint *m, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, float *s, float *rcond, lint *rank, float *work, lint *lwork, lint *info);
  void sgelsx_(lint *m, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, lint *jpvt, float *rcond, lint *rank, float *work, lint *info);
  void sgeql2_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *info);
  void sgeqlf_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sgeqpf_(lint *m, lint *n, float *a, lint *lda, lint *jpvt, float *tau, float *work, lint *info);
  void sgeqr2_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *info);
  void sgeqrf_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sgerfs_(char *trans, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgerq2_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *info);
  void sgerqf_(lint *m, lint *n, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sgesv_(lint *n, lint *nrhs, float *a, lint *lda, lint *ipiv, float *b, lint *ldb, lint *info);
  void sgesvd_(char *jobu, char *jobvt, lint *m, lint *n, float *a, lint *lda, float *s, float *u, lint *ldu, float *vt, lint *ldvt, float *work, lint *lwork, lint *info);
  void sgesvx_(char *fact, char *trans, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, lint *ipiv, char *equed, float *r, float *c, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgetf2_(lint *m, lint *n, float *a, lint *lda, lint *ipiv, lint *info);
  void sgetrf_(lint *m, lint *n, float *a, lint *lda, lint *ipiv, lint *info);
  void sgetri_(lint *n, float *a, lint *lda, lint *ipiv, float *work, lint *lwork, lint *info);
  void sgetrs_(char *trans, lint *n, lint *nrhs, float *a, lint *lda, lint *ipiv, float *b, lint *ldb, lint *info);
  void sggbak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, float *lscale, float *rscale, lint *m, float *v, lint *ldv, lint *info);
  void sggbal_(char *job, lint *n, float *a, lint *lda, float *b, lint *ldb, lint *ilo, lint *ihi, float *lscale, float *rscale, float *work, lint *info);
  void sggglm_(lint *n, lint *m, lint *p, float *a, lint *lda, float *b, lint *ldb, float *d, float *x, float *y, float *work, lint *lwork, lint *info);
  void sgghrd_(char *compq, char *compz, lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *b, lint *ldb, float *q, lint *ldq, float *z, lint *ldz, lint *info);
  void sgglse_(lint *m, lint *n, lint *p, float *a, lint *lda, float *b, lint *ldb, float *c, float *d, float *x, float *work, lint *lwork, lint *info);
  void sggqrf_(lint *n, lint *m, lint *p, float *a, lint *lda, float *taua, float *b, lint *ldb, float *taub, float *work, lint *lwork, lint *info);
  void sggrqf_(lint *m, lint *p, lint *n, float *a, lint *lda, float *taua, float *b, lint *ldb, float *taub, float *work, lint *lwork, lint *info);
  void sggsvd_(char *jobu, char *jobv, char *jobq, lint *m, lint *n, lint *p, lint *k, lint *l, float *a, lint *lda, float *b, lint *ldb, float *alpha, float *beta, float *u, lint *ldu, float *v, lint *ldv, float *q, lint *ldq, float *work, lint *iwork, lint *info);
  void sggsvp_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, float *a, lint *lda, float *b, lint *ldb, float *tola, float *tolb, lint *k, lint *l, float *u, lint *ldu, float *v, lint *ldv, float *q, lint *ldq, lint *iwork, float *tau, float *work, lint *info);
  void sgtcon_(char *norm, lint *n, float *dl, float *d, float *du, float *du2, lint *ipiv, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void sgtrfs_(char *trans, lint *n, lint *nrhs, float *dl, float *d, float *du, float *dlf, float *df, float *duf, float *du2, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgtsv_(lint *n, lint *nrhs, float *dl, float *d, float *du, float *b, lint *ldb, lint *info);
  void sgtsvx_(char *fact, char *trans, lint *n, lint *nrhs, float *dl, float *d, float *du, float *dlf, float *df, float *duf, float *du2, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sgttrf_(lint *n, float *dl, float *d, float *du, float *du2, lint *ipiv, lint *info);
  void sgttrs_(char *trans, lint *n, lint *nrhs, float *dl, float *d, float *du, float *du2, lint *ipiv, float *b, lint *ldb, lint *info);
  void shgeqz_(char *job, char *compq, char *compz, lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *b, lint *ldb, float *alphar, float *alphai, float *beta, float *q, lint *ldq, float *z, lint *ldz, float *work, lint *lwork, lint *info);
  void shsein_(char *side, char *eigsrc, char *initv, lint *select, lint *n, float *h, lint *ldh, float *wr, float *wi, float *vl, lint *ldvl, float *vr, lint *ldvr, lint *mm, lint *m, float *work, lint *ifaill, lint *ifailr, lint *info);
  void shseqr_(char *job, char *compz, lint *n, lint *ilo, lint *ihi, float *h, lint *ldh, float *wr, float *wi, float *z, lint *ldz, float *work, lint *lwork, lint *info);
  void slaed0_(lint *icompq, lint *qsiz, lint *n, float *d, float *e, float *q, lint *ldq, float *qstore, lint *ldqs, float *work, lint *iwork, lint *info);
  void slaed1_(lint *n, float *d, float *q, lint *ldq, lint *indxq, float *rho, lint *cutpnt, float *work, lint *iwork, lint *info);
  void slaed2_(lint *k, lint *n, float *d, float *q, lint *ldq, lint *indxq, float *rho, lint *cutpnt, float *z, float *dlamda, float *q2, lint *ldq2, lint *indxc, float *w, lint *indxp, lint *indx, lint *coltyp, lint *info);
  void slaed3_(lint *k, lint *kstart, lint *kstop, lint *n, float *d, float *q, lint *ldq, float *rho, lint *cutpnt, float *dlamda, float *q2, lint *ldq2, lint *indxc, lint *ctot, float *w, float *s, lint *lds, lint *info);
  void slaed4_(lint *n, lint *i, float *d, float *z, float *delta, float *rho, float *dlam, lint *info);
  void slaed5_(lint *i, float *d, float *z, float *delta, float *rho, float *dlam);
  void slaed6_(lint *kniter, lint *orgati, float *rho, float *d, float *z, float *finit, float *tau, lint *info);
  void slaed7_(lint *icompq, lint *n, lint *qsiz, lint *tlvls, lint *curlvl, lint *curpbm, float *d, float *q, lint *ldq, lint *indxq, float *rho, lint *cutpnt, float *qstore, lint *qptr, lint *prmptr, lint *perm, lint *givptr, lint *givcol, float *givnum, float *work, lint *iwork, lint *info);
  void slaed8_(lint *icompq, lint *k, lint *n, lint *qsiz, float *d, float *q, lint *ldq, lint *indxq, float *rho, lint *cutpnt, float *z, float *dlamda, float *q2, lint *ldq2, float *w, lint *perm, lint *givptr, lint *givcol, float *givnum, lint *indxp, lint *indx, lint *info);
  void slaed9_(lint *k, lint *kstart, lint *kstop, lint *n, float *d, float *q, lint *ldq, float *rho, float *dlamda, float *w, float *s, lint *lds, lint *info);
  void slaeda_(lint *n, lint *tlvls, lint *curlvl, lint *curpbm, lint *prmptr, lint *perm, lint *givptr, lint *givcol, float *givnum, float *q, lint *qptr, float *z, float *ztemp, lint *info);
  void slagtf_(lint *n, float *a, float *lambda, float *b, float *c, float *tol, float *d, lint *in, lint *info);
  void slamrg_(lint *n1, lint *n2, float *a, lint *strd1, lint *strd2, lint *index);
  void slasq1_(lint *n, float *d, float *e, float *work, lint *info);
  void slasq2_(lint *m, float *q, float *e, float *qq, float *ee, float *eps, float *tol2, float *small2, float *sup, lint *kend, lint *info);
  void slasq3_(lint *n, float *q, float *e, float *qq, float *ee, float *sup, float *sigma, lint *kend, lint *off, lint *iphase, lint *iconv, float *eps, float *tol2, float *small2);
  void slasq4_(lint *n, float *q, float *e, float *tau, float *sup);
  void slasrt_(char *id, lint *n, float *d, lint *info);
  void slatzm_(char *side, lint *m, lint *n, float *v, lint *incv, float *tau, float *c1, float *c2, lint *ldc, float *work);
  void sopgtr_(char *uplo, lint *n, float *ap, float *tau, float *q, lint *ldq, float *work, lint *info);
  void sopmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, float *ap, float *tau, float *c, lint *ldc, float *work, lint *info);
  void sorg2l_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *info);
  void sorg2r_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *info);
  void sorgbr_(char *vect, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorghr_(lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorgl2_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *info);
  void sorglq_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorgql_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorgqr_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorgr2_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *info);
  void sorgrq_(lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorgtr_(char *uplo, lint *n, float *a, lint *lda, float *tau, float *work, lint *lwork, lint *info);
  void sorm2l_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *info);
  void sorm2r_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *info);
  void sormbr_(char *vect, char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sormhr_(char *side, char *trans, lint *m, lint *n, lint *ilo, lint *ihi, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sorml2_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *info);
  void sormlq_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sormql_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sormqr_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sormr2_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *info);
  void sormrq_(char *side, char *trans, lint *m, lint *n, lint *k, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void sormtr_(char *side, char *uplo, char *trans, lint *m, lint *n, float *a, lint *lda, float *tau, float *c, lint *ldc, float *work, lint *lwork, lint *info);
  void spbcon_(char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void spbequ_(char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *s, float *scond, float *amax, lint *info);
  void spbrfs_(char *uplo, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *afb, lint *ldafb, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void spbstf_(char *uplo, lint *n, lint *kd, float *ab, lint *ldab, lint *info);
  void spbsv_(char *uplo, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *b, lint *ldb, lint *info);
  void spbsvx_(char *fact, char *uplo, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *afb, lint *ldafb, char *equed, float *s, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void spbtf2_(char *uplo, lint *n, lint *kd, float *ab, lint *ldab, lint *info);
  void spbtrf_(char *uplo, lint *n, lint *kd, float *ab, lint *ldab, lint *info);
  void spbtrs_(char *uplo, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *b, lint *ldb, lint *info);
  void spocon_(char *uplo, lint *n, float *a, lint *lda, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void spoequ_(lint *n, float *a, lint *lda, float *s, float *scond, float *amax, lint *info);
  void sporfs_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sposv_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, lint *info);
  void sposvx_(char *fact, char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, char *equed, float *s, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void spotf2_(char *uplo, lint *n, float *a, lint *lda, lint *info);
  void spotrf_(char *uplo, lint *n, float *a, lint *lda, lint *info);
  void spotri_(char *uplo, lint *n, float *a, lint *lda, lint *info);
  void spotrs_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, lint *info);
  void sppcon_(char *uplo, lint *n, float *ap, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void sppequ_(char *uplo, lint *n, float *ap, float *s, float *scond, float *amax, lint *info);
  void spprfs_(char *uplo, lint *n, lint *nrhs, float *ap, float *afp, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sppsv_(char *uplo, lint *n, lint *nrhs, float *ap, float *b, lint *ldb, lint *info);
  void sppsvx_(char *fact, char *uplo, lint *n, lint *nrhs, float *ap, float *afp, char *equed, float *s, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void spptrf_(char *uplo, lint *n, float *ap, lint *info);
  void spptri_(char *uplo, lint *n, float *ap, lint *info);
  void spptrs_(char *uplo, lint *n, lint *nrhs, float *ap, float *b, lint *ldb, lint *info);
  void sptcon_(lint *n, float *d, float *e, float *anorm, float *rcond, float *work, lint *info);
  void spteqr_(char *compz, lint *n, float *d, float *e, float *z, lint *ldz, float *work, lint *info);
  void sptrfs_(lint *n, lint *nrhs, float *d, float *e, float *df, float *ef, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *info);
  void sptsv_(lint *n, lint *nrhs, float *d, float *e, float *b, lint *ldb, lint *info);
  void sptsvx_(char *fact, lint *n, lint *nrhs, float *d, float *e, float *df, float *ef, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *info);
  void spttrf_(lint *n, float *d, float *e, lint *info);
  void spttrs_(lint *n, lint *nrhs, float *d, float *e, float *b, lint *ldb, lint *info);
  void ssbev_(char *jobz, char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *w, float *z, lint *ldz, float *work, lint *info);
  void ssbevd_(char *jobz, char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *w, float *z, lint *ldz, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void ssbevx_(char *jobz, char *range, char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *q, lint *ldq, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, float *z, lint *ldz, float *work, lint *iwork, lint *ifail, lint *info);
  void ssbgst_(char *vect, char *uplo, lint *n, lint *ka, lint *kb, float *ab, lint *ldab, float *bb, lint *ldbb, float *x, lint *ldx, float *work, lint *info);
  void ssbgv_(char *jobz, char *uplo, lint *n, lint *ka, lint *kb, float *ab, lint *ldab, float *bb, lint *ldbb, float *w, float *z, lint *ldz, float *work, lint *info);
  void ssbtrd_(char *vect, char *uplo, lint *n, lint *kd, float *ab, lint *ldab, float *d, float *e, float *q, lint *ldq, float *work, lint *info);
  void sspcon_(char *uplo, lint *n, float *ap, lint *ipiv, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void sspev_(char *jobz, char *uplo, lint *n, float *ap, float *w, float *z, lint *ldz, float *work, lint *info);
  void sspevd_(char *jobz, char *uplo, lint *n, float *ap, float *w, float *z, lint *ldz, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void sspevx_(char *jobz, char *range, char *uplo, lint *n, float *ap, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, float *z, lint *ldz, float *work, lint *iwork, lint *ifail, lint *info);
  void sspgst_(lint *itype, char *uplo, lint *n, float *ap, float *bp, lint *info);
  void sspgv_(lint *itype, char *jobz, char *uplo, lint *n, float *ap, float *bp, float *w, float *z, lint *ldz, float *work, lint *info);
  void ssprfs_(char *uplo, lint *n, lint *nrhs, float *ap, float *afp, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void sspsv_(char *uplo, lint *n, lint *nrhs, float *ap, lint *ipiv, float *b, lint *ldb, lint *info);
  void sspsvx_(char *fact, char *uplo, lint *n, lint *nrhs, float *ap, float *afp, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void ssptrd_(char *uplo, lint *n, float *ap, float *d, float *e, float *tau, lint *info);
  void ssptrf_(char *uplo, lint *n, float *ap, lint *ipiv, lint *info);
  void ssptri_(char *uplo, lint *n, float *ap, lint *ipiv, float *work, lint *info);
  void ssptrs_(char *uplo, lint *n, lint *nrhs, float *ap, lint *ipiv, float *b, lint *ldb, lint *info);
  void sstebz_(char *range, char *order, lint *n, float *vl, float *vu, lint *il, lint *iu, float *abstol, float *d, float *e, lint *m, lint *nsplit, float *w, lint *iblock, lint *isplit, float *work, lint *iwork, lint *info);
  void sstedc_(char *compz, lint *n, float *d, float *e, float *z, lint *ldz, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void sstein_(lint *n, float *d, float *e, lint *m, float *w, lint *iblock, lint *isplit, float *z, lint *ldz, float *work, lint *iwork, lint *ifail, lint *info);
  void ssteqr_(char *compz, lint *n, float *d, float *e, float *z, lint *ldz, float *work, lint *info);
  void ssterf_(lint *n, float *d, float *e, lint *info);
  void sstev_(char *jobz, lint *n, float *d, float *e, float *z, lint *ldz, float *work, lint *info);
  void sstevd_(char *jobz, lint *n, float *d, float *e, float *z, lint *ldz, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void sstevx_(char *jobz, char *range, lint *n, float *d, float *e, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, float *z, lint *ldz, float *work, lint *iwork, lint *ifail, lint *info);
  void ssycon_(char *uplo, lint *n, float *a, lint *lda, lint *ipiv, float *anorm, float *rcond, float *work, lint *iwork, lint *info);
  void ssyev_(char *jobz, char *uplo, lint *n, float *a, lint *lda, float *w, float *work, lint *lwork, lint *info);
  void ssyevd_(char *jobz, char *uplo, lint *n, float *a, lint *lda, float *w, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void ssyevx_(char *jobz, char *range, char *uplo, lint *n, float *a, lint *lda, float *vl, float *vu, lint *il, lint *iu, float *abstol, lint *m, float *w, float *z, lint *ldz, float *work, lint *lwork, lint *iwork, lint *ifail, lint *info);
  void ssygs2_(lint *itype, char *uplo, lint *n, float *a, lint *lda, float *b, lint *ldb, lint *info);
  void ssygst_(lint *itype, char *uplo, lint *n, float *a, lint *lda, float *b, lint *ldb, lint *info);
  void ssygv_(lint *itype, char *jobz, char *uplo, lint *n, float *a, lint *lda, float *b, lint *ldb, float *w, float *work, lint *lwork, lint *info);
  void ssyrfs_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void ssysv_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, lint *ipiv, float *b, lint *ldb, float *work, lint *lwork, lint *info);
  void ssysvx_(char *fact, char *uplo, lint *n, lint *nrhs, float *a, lint *lda, float *af, lint *ldaf, lint *ipiv, float *b, lint *ldb, float *x, lint *ldx, float *rcond, float *ferr, float *berr, float *work, lint *lwork, lint *iwork, lint *info);
  void ssytd2_(char *uplo, lint *n, float *a, lint *lda, float *d, float *e, float *tau, lint *info);
  void ssytf2_(char *uplo, lint *n, float *a, lint *lda, lint *ipiv, lint *info);
  void ssytrd_(char *uplo, lint *n, float *a, lint *lda, float *d, float *e, float *tau, float *work, lint *lwork, lint *info);
  void ssytrf_(char *uplo, lint *n, float *a, lint *lda, lint *ipiv, float *work, lint *lwork, lint *info);
  void ssytri_(char *uplo, lint *n, float *a, lint *lda, lint *ipiv, float *work, lint *info);
  void ssytrs_(char *uplo, lint *n, lint *nrhs, float *a, lint *lda, lint *ipiv, float *b, lint *ldb, lint *info);
  void stbcon_(char *norm, char *uplo, char *diag, lint *n, lint *kd, float *ab, lint *ldab, float *rcond, float *work, lint *iwork, lint *info);
  void stbrfs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void stbtrs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, float *ab, lint *ldab, float *b, lint *ldb, lint *info);
  void stgevc_(char *side, char *howmny, lint *select, lint *n, float *a, lint *lda, float *b, lint *ldb, float *vl, lint *ldvl, float *vr, lint *ldvr, lint *mm, lint *m, float *work, lint *info);
  void stgsja_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, lint *k, lint *l, float *a, lint *lda, float *b, lint *ldb, float *tola, float *tolb, float *alpha, float *beta, float *u, lint *ldu, float *v, lint *ldv, float *q, lint *ldq, float *work, lint *ncycle, lint *info);
  void stpcon_(char *norm, char *uplo, char *diag, lint *n, float *ap, float *rcond, float *work, lint *iwork, lint *info);
  void stprfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, float *ap, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void stptri_(char *uplo, char *diag, lint *n, float *ap, lint *info);
  void stptrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, float *ap, float *b, lint *ldb, lint *info);
  void strcon_(char *norm, char *uplo, char *diag, lint *n, float *a, lint *lda, float *rcond, float *work, lint *iwork, lint *info);
  void strevc_(char *side, char *howmny, lint *select, lint *n, float *t, lint *ldt, float *vl, lint *ldvl, float *vr, lint *ldvr, lint *mm, lint *m, float *work, lint *info);
  void strexc_(char *compq, lint *n, float *t, lint *ldt, float *q, lint *ldq, lint *ifst, lint *ilst, float *work, lint *info);
  void strrfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, float *x, lint *ldx, float *ferr, float *berr, float *work, lint *iwork, lint *info);
  void strsen_(char *job, char *compq, lint *select, lint *n, float *t, lint *ldt, float *q, lint *ldq, float *wr, float *wi, lint *m, float *s, float *sep, float *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void strsna_(char *job, char *howmny, lint *select, lint *n, float *t, lint *ldt, float *vl, lint *ldvl, float *vr, lint *ldvr, float *s, float *sep, lint *mm, lint *m, float *work, lint *ldwork, lint *iwork, lint *info);
  void strsyl_(char *trana, char *tranb, lint *isgn, lint *m, lint *n, float *a, lint *lda, float *b, lint *ldb, float *c, lint *ldc, float *scale, lint *info);
  void strti2_(char *uplo, char *diag, lint *n, float *a, lint *lda, lint *info);
  void strtri_(char *uplo, char *diag, lint *n, float *a, lint *lda, lint *info);
  void strtrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, float *a, lint *lda, float *b, lint *ldb, lint *info);
  void stzrqf_(lint *m, lint *n, float *a, lint *lda, float *tau, lint *info);



  void dbdsqr_(char *uplo, lint *n, lint *ncvt, lint *nru, lint *ncc, double *d, double *e, double *vt, lint *ldvt, double *u, lint *ldu, double *c, lint *ldc, double *work, lint *info);
  void ddisna_(char *job, lint *m, lint *n, double *d, double *sep, lint *info);
  void dgbbrd_(char *vect, lint *m, lint *n, lint *ncc, lint *kl, lint *ku, double *ab, lint *ldab, double *d, double *e, double *q, lint *ldq, double *pt, lint *ldpt, double *c, lint *ldc, double *work, lint *info);
  void dgbcon_(char *norm, lint *n, lint *kl, lint *ku, double *ab, lint *ldab, lint *ipiv, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dgbequ_(lint *m, lint *n, lint *kl, lint *ku, double *ab, lint *ldab, double *r, double *c, double *rowcnd, double *colcnd, double *amax, lint *info);
  void dgbrfs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, double *ab, lint *ldab, double *afb, lint *ldafb, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgbsv_(lint *n, lint *kl, lint *ku, lint *nrhs, double *ab, lint *ldab, lint *ipiv, double *b, lint *ldb, lint *info);
  void dgbsvx_(char *fact, char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, double *ab, lint *ldab, double *afb, lint *ldafb, lint *ipiv, char *equed, double *r, double *c, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgbtf2_(lint *m, lint *n, lint *kl, lint *ku, double *ab, lint *ldab, lint *ipiv, lint *info);
  void dgbtrf_(lint *m, lint *n, lint *kl, lint *ku, double *ab, lint *ldab, lint *ipiv, lint *info);
  void dgbtrs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, double *ab, lint *ldab, lint *ipiv, double *b, lint *ldb, lint *info);
  void dgebak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, double *scale, lint *m, double *v, lint *ldv, lint *info);
  void dgebal_(char *job, lint *n, double *a, lint *lda, lint *ilo, lint *ihi, double *scale, lint *info);
  void dgebd2_(lint *m, lint *n, double *a, lint *lda, double *d, double *e, double *tauq, double *taup, double *work, lint *info);
  void dgebrd_(lint *m, lint *n, double *a, lint *lda, double *d, double *e, double *tauq, double *taup, double *work, lint *lwork, lint *info);
  void dgecon_(char *norm, lint *n, double *a, lint *lda, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dgeequ_(lint *m, lint *n, double *a, lint *lda, double *r, double *c, double *rowcnd, double *colcnd, double *amax, lint *info);
  void dgees_(char *jobvs, char *sort, lint *select, lint *n, double *a, lint *lda, lint *sdim, double *wr, double *wi, double *vs, lint *ldvs, double *work, lint *lwork, lint *bwork, lint *info);
  void dgeesx_(char *jobvs, char *sort, lint *select, char *sense, lint *n, double *a, lint *lda, lint *sdim, double *wr, double *wi, double *vs, lint *ldvs, double *rconde, double *rcondv, double *work, lint *lwork, lint *iwork, lint *liwork, lint *bwork, lint *info);
  void dgeev_(char *jobvl, char *jobvr, lint *n, double *a, lint *lda, double *wr, double *wi, double *vl, lint *ldvl, double *vr, lint *ldvr, double *work, lint *lwork, lint *info);
  void dgeevx_(char *balanc, char *jobvl, char *jobvr, char *sense, lint *n, double *a, lint *lda, double *wr, double *wi, double *vl, lint *ldvl, double *vr, lint *ldvr, lint *ilo, lint *ihi, double *scale, double *abnrm, double *rconde, double *rcondv, double *work, lint *lwork, lint *iwork, lint *info);
  void dgegs_(char *jobvsl, char *jobvsr, lint *n, double *a, lint *lda, double *b, lint *ldb, double *alphar, double *alphai, double *beta, double *vsl, lint *ldvsl, double *vsr, lint *ldvsr, double *work, lint *lwork, lint *info);
  void dgegv_(char *jobvl, char *jobvr, lint *n, double *a, lint *lda, double *b, lint *ldb, double *alphar, double *alphai, double *beta, double *vl, lint *ldvl, double *vr, lint *ldvr, double *work, lint *lwork, lint *info);
  void dgehd2_(lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *tau, double *work, lint *info);
  void dgehrd_(lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dgelq2_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *info);
  void dgelqf_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dgels_(char *trans, lint *m, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, double *work, lint *lwork, lint *info);
  void dgelss_(lint *m, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, double *s, double *rcond, lint *rank, double *work, lint *lwork, lint *info);
  void dgelsx_(lint *m, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, lint *jpvt, double *rcond, lint *rank, double *work, lint *info);
  void dgeql2_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *info);
  void dgeqlf_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dgeqpf_(lint *m, lint *n, double *a, lint *lda, lint *jpvt, double *tau, double *work, lint *info);
  void dgeqr2_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *info);
  void dgeqrf_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dgerfs_(char *trans, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgerq2_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *info);
  void dgerqf_(lint *m, lint *n, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dgesv_(lint *n, lint *nrhs, double *a, lint *lda, lint *ipiv, double *b, lint *ldb, lint *info);
  void dgesvd_(char *jobu, char *jobvt, lint *m, lint *n, double *a, lint *lda, double *s, double *u, lint *ldu, double *vt, lint *ldvt, double *work, lint *lwork, lint *info);
  void dgesvx_(char *fact, char *trans, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, lint *ipiv, char *equed, double *r, double *c, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgetf2_(lint *m, lint *n, double *a, lint *lda, lint *ipiv, lint *info);
  void dgetrf_(lint *m, lint *n, double *a, lint *lda, lint *ipiv, lint *info);
  void dgetri_(lint *n, double *a, lint *lda, lint *ipiv, double *work, lint *lwork, lint *info);
  void dgetrs_(char *trans, lint *n, lint *nrhs, double *a, lint *lda, lint *ipiv, double *b, lint *ldb, lint *info);
  void dggbak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, double *lscale, double *rscale, lint *m, double *v, lint *ldv, lint *info);
  void dggbal_(char *job, lint *n, double *a, lint *lda, double *b, lint *ldb, lint *ilo, lint *ihi, double *lscale, double *rscale, double *work, lint *info);
  void dggglm_(lint *n, lint *m, lint *p, double *a, lint *lda, double *b, lint *ldb, double *d, double *x, double *y, double *work, lint *lwork, lint *info);
  void dgghrd_(char *compq, char *compz, lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *b, lint *ldb, double *q, lint *ldq, double *z, lint *ldz, lint *info);
  void dgglse_(lint *m, lint *n, lint *p, double *a, lint *lda, double *b, lint *ldb, double *c, double *d, double *x, double *work, lint *lwork, lint *info);
  void dggqrf_(lint *n, lint *m, lint *p, double *a, lint *lda, double *taua, double *b, lint *ldb, double *taub, double *work, lint *lwork, lint *info);
  void dggrqf_(lint *m, lint *p, lint *n, double *a, lint *lda, double *taua, double *b, lint *ldb, double *taub, double *work, lint *lwork, lint *info);
  void dggsvd_(char *jobu, char *jobv, char *jobq, lint *m, lint *n, lint *p, lint *k, lint *l, double *a, lint *lda, double *b, lint *ldb, double *alpha, double *beta, double *u, lint *ldu, double *v, lint *ldv, double *q, lint *ldq, double *work, lint *iwork, lint *info);
  void dggsvp_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, double *a, lint *lda, double *b, lint *ldb, double *tola, double *tolb, lint *k, lint *l, double *u, lint *ldu, double *v, lint *ldv, double *q, lint *ldq, lint *iwork, double *tau, double *work, lint *info);
  void dgtcon_(char *norm, lint *n, double *dl, double *d, double *du, double *du2, lint *ipiv, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dgtrfs_(char *trans, lint *n, lint *nrhs, double *dl, double *d, double *du, double *dlf, double *df, double *duf, double *du2, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgtsv_(lint *n, lint *nrhs, double *dl, double *d, double *du, double *b, lint *ldb, lint *info);
  void dgtsvx_(char *fact, char *trans, lint *n, lint *nrhs, double *dl, double *d, double *du, double *dlf, double *df, double *duf, double *du2, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dgttrf_(lint *n, double *dl, double *d, double *du, double *du2, lint *ipiv, lint *info);
  void dgttrs_(char *trans, lint *n, lint *nrhs, double *dl, double *d, double *du, double *du2, lint *ipiv, double *b, lint *ldb, lint *info);
  void dhgeqz_(char *job, char *compq, char *compz, lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *b, lint *ldb, double *alphar, double *alphai, double *beta, double *q, lint *ldq, double *z, lint *ldz, double *work, lint *lwork, lint *info);
  void dhsein_(char *side, char *eigsrc, char *initv, lint *select, lint *n, double *h, lint *ldh, double *wr, double *wi, double *vl, lint *ldvl, double *vr, lint *ldvr, lint *mm, lint *m, double *work, lint *ifaill, lint *ifailr, lint *info);
  void dhseqr_(char *job, char *compz, lint *n, lint *ilo, lint *ihi, double *h, lint *ldh, double *wr, double *wi, double *z, lint *ldz, double *work, lint *lwork, lint *info);
  void dlaed0_(lint *icompq, lint *qsiz, lint *n, double *d, double *e, double *q, lint *ldq, double *qstore, lint *ldqs, double *work, lint *iwork, lint *info);
  void dlaed1_(lint *n, double *d, double *q, lint *ldq, lint *indxq, double *rho, lint *cutpnt, double *work, lint *iwork, lint *info);
  void dlaed2_(lint *k, lint *n, double *d, double *q, lint *ldq, lint *indxq, double *rho, lint *cutpnt, double *z, double *dlamda, double *q2, lint *ldq2, lint *indxc, double *w, lint *indxp, lint *indx, lint *coltyp, lint *info);
  void dlaed3_(lint *k, lint *kstart, lint *kstop, lint *n, double *d, double *q, lint *ldq, double *rho, lint *cutpnt, double *dlamda, double *q2, lint *ldq2, lint *indxc, lint *ctot, double *w, double *s, lint *lds, lint *info);
  void dlaed4_(lint *n, lint *i, double *d, double *z, double *delta, double *rho, double *dlam, lint *info);
  void dlaed5_(lint *i, double *d, double *z, double *delta, double *rho, double *dlam);
  void dlaed6_(lint *kniter, lint *orgati, double *rho, double *d, double *z, double *finit, double *tau, lint *info);
  void dlaed7_(lint *icompq, lint *n, lint *qsiz, lint *tlvls, lint *curlvl, lint *curpbm, double *d, double *q, lint *ldq, lint *indxq, double *rho, lint *cutpnt, double *qstore, lint *qptr, lint *prmptr, lint *perm, lint *givptr, lint *givcol, double *givnum, double *work, lint *iwork, lint *info);
  void dlaed8_(lint *icompq, lint *k, lint *n, lint *qsiz, double *d, double *q, lint *ldq, lint *indxq, double *rho, lint *cutpnt, double *z, double *dlamda, double *q2, lint *ldq2, double *w, lint *perm, lint *givptr, lint *givcol, double *givnum, lint *indxp, lint *indx, lint *info);
  void dlaed9_(lint *k, lint *kstart, lint *kstop, lint *n, double *d, double *q, lint *ldq, double *rho, double *dlamda, double *w, double *s, lint *lds, lint *info);
  void dlaeda_(lint *n, lint *tlvls, lint *curlvl, lint *curpbm, lint *prmptr, lint *perm, lint *givptr, lint *givcol, double *givnum, double *q, lint *qptr, double *z, double *ztemp, lint *info);
  void dlagtf_(lint *n, double *a, double *lambda, double *b, double *c, double *tol, double *d, lint *in, lint *info);
  void dlamrg_(lint *n1, lint *n2, double *a, lint *dtrd1, lint *dtrd2, lint *index);
  void dlasq1_(lint *n, double *d, double *e, double *work, lint *info);
  void dlasq2_(lint *m, double *q, double *e, double *qq, double *ee, double *eps, double *tol2, double *small2, double *sup, lint *kend, lint *info);
  void dlasq3_(lint *n, double *q, double *e, double *qq, double *ee, double *sup, double *sigma, lint *kend, lint *off, lint *iphase, lint *iconv, double *eps, double *tol2, double *small2);
  void dlasq4_(lint *n, double *q, double *e, double *tau, double *sup);
  void dlasrt_(char *id, lint *n, double *d, lint *info);
  void dlatzm_(char *side, lint *m, lint *n, double *v, lint *incv, double *tau, double *c1, double *c2, lint *ldc, double *work);
  void dopgtr_(char *uplo, lint *n, double *ap, double *tau, double *q, lint *ldq, double *work, lint *info);
  void dopmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, double *ap, double *tau, double *c, lint *ldc, double *work, lint *info);
  void dorg2l_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *info);
  void dorg2r_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *info);
  void dorgbr_(char *vect, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorghr_(lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorgl2_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *info);
  void dorglq_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorgql_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorgqr_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorgr2_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *info);
  void dorgrq_(lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorgtr_(char *uplo, lint *n, double *a, lint *lda, double *tau, double *work, lint *lwork, lint *info);
  void dorm2l_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *info);
  void dorm2r_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *info);
  void dormbr_(char *vect, char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dormhr_(char *side, char *trans, lint *m, lint *n, lint *ilo, lint *ihi, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dorml2_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *info);
  void dormlq_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dormql_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dormqr_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dormr2_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *info);
  void dormrq_(char *side, char *trans, lint *m, lint *n, lint *k, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dormtr_(char *side, char *uplo, char *trans, lint *m, lint *n, double *a, lint *lda, double *tau, double *c, lint *ldc, double *work, lint *lwork, lint *info);
  void dpbcon_(char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dpbequ_(char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *s, double *scond, double *amax, lint *info);
  void dpbrfs_(char *uplo, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *afb, lint *ldafb, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dpbstf_(char *uplo, lint *n, lint *kd, double *ab, lint *ldab, lint *info);
  void dpbsv_(char *uplo, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *b, lint *ldb, lint *info);
  void dpbsvx_(char *fact, char *uplo, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *afb, lint *ldafb, char *equed, double *s, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dpbtf2_(char *uplo, lint *n, lint *kd, double *ab, lint *ldab, lint *info);
  void dpbtrf_(char *uplo, lint *n, lint *kd, double *ab, lint *ldab, lint *info);
  void dpbtrs_(char *uplo, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *b, lint *ldb, lint *info);
  void dpocon_(char *uplo, lint *n, double *a, lint *lda, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dpoequ_(lint *n, double *a, lint *lda, double *s, double *scond, double *amax, lint *info);
  void dporfs_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dposv_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, lint *info);
  void dposvx_(char *fact, char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, char *equed, double *s, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dpotf2_(char *uplo, lint *n, double *a, lint *lda, lint *info);
  void dpotrf_(char *uplo, lint *n, double *a, lint *lda, lint *info);
  void dpotri_(char *uplo, lint *n, double *a, lint *lda, lint *info);
  void dpotrs_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, lint *info);
  void dppcon_(char *uplo, lint *n, double *ap, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dppequ_(char *uplo, lint *n, double *ap, double *s, double *scond, double *amax, lint *info);
  void dpprfs_(char *uplo, lint *n, lint *nrhs, double *ap, double *afp, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dppsv_(char *uplo, lint *n, lint *nrhs, double *ap, double *b, lint *ldb, lint *info);
  void dppsvx_(char *fact, char *uplo, lint *n, lint *nrhs, double *ap, double *afp, char *equed, double *s, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dpptrf_(char *uplo, lint *n, double *ap, lint *info);
  void dpptri_(char *uplo, lint *n, double *ap, lint *info);
  void dpptrs_(char *uplo, lint *n, lint *nrhs, double *ap, double *b, lint *ldb, lint *info);
  void dptcon_(lint *n, double *d, double *e, double *anorm, double *rcond, double *work, lint *info);
  void dpteqr_(char *compz, lint *n, double *d, double *e, double *z, lint *ldz, double *work, lint *info);
  void dptrfs_(lint *n, lint *nrhs, double *d, double *e, double *df, double *ef, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *info);
  void dptsv_(lint *n, lint *nrhs, double *d, double *e, double *b, lint *ldb, lint *info);
  void dptsvx_(char *fact, lint *n, lint *nrhs, double *d, double *e, double *df, double *ef, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *info);
  void dpttrf_(lint *n, double *d, double *e, lint *info);
  void dpttrs_(lint *n, lint *nrhs, double *d, double *e, double *b, lint *ldb, lint *info);
  void dsbev_(char *jobz, char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *w, double *z, lint *ldz, double *work, lint *info);
  void dsbevd_(char *jobz, char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *w, double *z, lint *ldz, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dsbevx_(char *jobz, char *range, char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *q, lint *ldq, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, double *z, lint *ldz, double *work, lint *iwork, lint *ifail, lint *info);
  void dsbgst_(char *vect, char *uplo, lint *n, lint *ka, lint *kb, double *ab, lint *ldab, double *bb, lint *ldbb, double *x, lint *ldx, double *work, lint *info);
  void dsbgv_(char *jobz, char *uplo, lint *n, lint *ka, lint *kb, double *ab, lint *ldab, double *bb, lint *ldbb, double *w, double *z, lint *ldz, double *work, lint *info);
  void dsbtrd_(char *vect, char *uplo, lint *n, lint *kd, double *ab, lint *ldab, double *d, double *e, double *q, lint *ldq, double *work, lint *info);
  void dspcon_(char *uplo, lint *n, double *ap, lint *ipiv, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dspev_(char *jobz, char *uplo, lint *n, double *ap, double *w, double *z, lint *ldz, double *work, lint *info);
  void dspevd_(char *jobz, char *uplo, lint *n, double *ap, double *w, double *z, lint *ldz, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dspevx_(char *jobz, char *range, char *uplo, lint *n, double *ap, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, double *z, lint *ldz, double *work, lint *iwork, lint *ifail, lint *info);
  void dspgst_(lint *itype, char *uplo, lint *n, double *ap, double *bp, lint *info);
  void dspgv_(lint *itype, char *jobz, char *uplo, lint *n, double *ap, double *bp, double *w, double *z, lint *ldz, double *work, lint *info);
  void dsprfs_(char *uplo, lint *n, lint *nrhs, double *ap, double *afp, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dspsv_(char *uplo, lint *n, lint *nrhs, double *ap, lint *ipiv, double *b, lint *ldb, lint *info);
  void dspsvx_(char *fact, char *uplo, lint *n, lint *nrhs, double *ap, double *afp, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dsptrd_(char *uplo, lint *n, double *ap, double *d, double *e, double *tau, lint *info);
  void dsptrf_(char *uplo, lint *n, double *ap, lint *ipiv, lint *info);
  void dsptri_(char *uplo, lint *n, double *ap, lint *ipiv, double *work, lint *info);
  void dsptrs_(char *uplo, lint *n, lint *nrhs, double *ap, lint *ipiv, double *b, lint *ldb, lint *info);
  void dstebz_(char *range, char *order, lint *n, double *vl, double *vu, lint *il, lint *iu, double *abstol, double *d, double *e, lint *m, lint *nsplit, double *w, lint *iblock, lint *isplit, double *work, lint *iwork, lint *info);
  void dstedc_(char *compz, lint *n, double *d, double *e, double *z, lint *ldz, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dstein_(lint *n, double *d, double *e, lint *m, double *w, lint *iblock, lint *isplit, double *z, lint *ldz, double *work, lint *iwork, lint *ifail, lint *info);
  void dsteqr_(char *compz, lint *n, double *d, double *e, double *z, lint *ldz, double *work, lint *info);
  void dsterf_(lint *n, double *d, double *e, lint *info);
  void dstev_(char *jobz, lint *n, double *d, double *e, double *z, lint *ldz, double *work, lint *info);
  void dstevd_(char *jobz, lint *n, double *d, double *e, double *z, lint *ldz, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dstevx_(char *jobz, char *range, lint *n, double *d, double *e, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, double *z, lint *ldz, double *work, lint *iwork, lint *ifail, lint *info);
  void dsycon_(char *uplo, lint *n, double *a, lint *lda, lint *ipiv, double *anorm, double *rcond, double *work, lint *iwork, lint *info);
  void dsyev_(char *jobz, char *uplo, lint *n, double *a, lint *lda, double *w, double *work, lint *lwork, lint *info);
  void dsyevd_(char *jobz, char *uplo, lint *n, double *a, lint *lda, double *w, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dsyevx_(char *jobz, char *range, char *uplo, lint *n, double *a, lint *lda, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, double *z, lint *ldz, double *work, lint *lwork, lint *iwork, lint *ifail, lint *info);
  void dsygs2_(lint *itype, char *uplo, lint *n, double *a, lint *lda, double *b, lint *ldb, lint *info);
  void dsygst_(lint *itype, char *uplo, lint *n, double *a, lint *lda, double *b, lint *ldb, lint *info);
  void dsygv_(lint *itype, char *jobz, char *uplo, lint *n, double *a, lint *lda, double *b, lint *ldb, double *w, double *work, lint *lwork, lint *info);
  void dsyrfs_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dsysv_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, lint *ipiv, double *b, lint *ldb, double *work, lint *lwork, lint *info);
  void dsysvx_(char *fact, char *uplo, lint *n, lint *nrhs, double *a, lint *lda, double *af, lint *ldaf, lint *ipiv, double *b, lint *ldb, double *x, lint *ldx, double *rcond, double *ferr, double *berr, double *work, lint *lwork, lint *iwork, lint *info);
  void dsytd2_(char *uplo, lint *n, double *a, lint *lda, double *d, double *e, double *tau, lint *info);
  void dsytf2_(char *uplo, lint *n, double *a, lint *lda, lint *ipiv, lint *info);
  void dsytrd_(char *uplo, lint *n, double *a, lint *lda, double *d, double *e, double *tau, double *work, lint *lwork, lint *info);
  void dsytrf_(char *uplo, lint *n, double *a, lint *lda, lint *ipiv, double *work, lint *lwork, lint *info);
  void dsytri_(char *uplo, lint *n, double *a, lint *lda, lint *ipiv, double *work, lint *info);
  void dsytrs_(char *uplo, lint *n, lint *nrhs, double *a, lint *lda, lint *ipiv, double *b, lint *ldb, lint *info);
  void dtbcon_(char *norm, char *uplo, char *diag, lint *n, lint *kd, double *ab, lint *ldab, double *rcond, double *work, lint *iwork, lint *info);
  void dtbrfs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dtbtrs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, double *ab, lint *ldab, double *b, lint *ldb, lint *info);
  void dtgevc_(char *side, char *howmny, lint *select, lint *n, double *a, lint *lda, double *b, lint *ldb, double *vl, lint *ldvl, double *vr, lint *ldvr, lint *mm, lint *m, double *work, lint *info);
  void dtgsja_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, lint *k, lint *l, double *a, lint *lda, double *b, lint *ldb, double *tola, double *tolb, double *alpha, double *beta, double *u, lint *ldu, double *v, lint *ldv, double *q, lint *ldq, double *work, lint *ncycle, lint *info);
  void dtpcon_(char *norm, char *uplo, char *diag, lint *n, double *ap, double *rcond, double *work, lint *iwork, lint *info);
  void dtprfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, double *ap, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dtptri_(char *uplo, char *diag, lint *n, double *ap, lint *info);
  void dtptrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, double *ap, double *b, lint *ldb, lint *info);
  void dtrcon_(char *norm, char *uplo, char *diag, lint *n, double *a, lint *lda, double *rcond, double *work, lint *iwork, lint *info);
  void dtrevc_(char *side, char *howmny, lint *select, lint *n, double *t, lint *ldt, double *vl, lint *ldvl, double *vr, lint *ldvr, lint *mm, lint *m, double *work, lint *info);
  void dtrexc_(char *compq, lint *n, double *t, lint *ldt, double *q, lint *ldq, lint *ifst, lint *ilst, double *work, lint *info);
  void dtrrfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, double *x, lint *ldx, double *ferr, double *berr, double *work, lint *iwork, lint *info);
  void dtrsen_(char *job, char *compq, lint *select, lint *n, double *t, lint *ldt, double *q, lint *ldq, double *wr, double *wi, lint *m, double *s, double *sep, double *work, lint *lwork, lint *iwork, lint *liwork, lint *info);
  void dtrsna_(char *job, char *howmny, lint *select, lint *n, double *t, lint *ldt, double *vl, lint *ldvl, double *vr, lint *ldvr, double *s, double *sep, lint *mm, lint *m, double *work, lint *ldwork, lint *iwork, lint *info);
  void dtrsyl_(char *trana, char *tranb, lint *isgn, lint *m, lint *n, double *a, lint *lda, double *b, lint *ldb, double *c, lint *ldc, double *scale, lint *info);
  void dtrti2_(char *uplo, char *diag, lint *n, double *a, lint *lda, lint *info);
  void dtrtri_(char *uplo, char *diag, lint *n, double *a, lint *lda, lint *info);
  void dtrtrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, double *a, lint *lda, double *b, lint *ldb, lint *info);
  void dtzrqf_(lint *m, lint *n, double *a, lint *lda, double *tau, lint *info);
  void zbdsqr_(char *uplo, lint *n, lint *ncvt, lint *nru, lint *ncc, double *d, double *e, cpx16 *vt, lint *ldvt, cpx16 *u, lint *ldu, cpx16 *c, lint *ldc, double *rwork, lint *info);
  void zdrot_(lint *n, cpx16 *cx, lint *incx, cpx16 *cy, lint *incy, double *c, double *s);
  void zgbbrd_(char *vect, lint *m, lint *n, lint *ncc, lint *kl, lint *ku, cpx16 *ab, lint *ldab, double *d, double *e, cpx16 *q, lint *ldq, cpx16 *pt, lint *ldpt, cpx16 *c, lint *ldc, cpx16 *work, double *rwork, lint *info);
  void zgbcon_(char *norm, lint *n, lint *kl, lint *ku, cpx16 *ab, lint *ldab, lint *ipiv, double *anorm, double *rcond, cpx16 *work, double *rwork, lint *info);
  void zgbequ_(lint *m, lint *n, lint *kl, lint *ku, cpx16 *ab, lint *ldab, double *r, double *c, double *rowcnd, double *colcnd, double *amax, lint *info);
  void zgbrfs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *afb, lint *ldafb, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
void zgbsv_(lint *n, lint *kl, lint *ku, lint *nrhs, cpx16 *ab, lint *ldab, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zgbsvx_(char *fact, char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *afb, lint *ldafb, lint *ipiv, char *equed, double *r, double *c, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zgbtf2_(lint *m, lint *n, lint *kl, lint *ku, cpx16 *ab, lint *ldab, lint *ipiv, lint *info);
  void zgbtrf_(lint *m, lint *n, lint *kl, lint *ku, cpx16 *ab, lint *ldab, lint *ipiv, lint *info);
  void zgbtrs_(char *trans, lint *n, lint *kl, lint *ku, lint *nrhs, cpx16 *ab, lint *ldab, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zgebak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, double *scale, lint *m, cpx16 *v, lint *ldv, lint *info);
  void zgebal_(char *job, lint *n, cpx16 *a, lint *lda, lint *ilo, lint *ihi, double *scale, lint *info);
  void zgebd2_(lint *m, lint *n, cpx16 *a, lint *lda, double *d, double *e, cpx16 *tauq, cpx16 *taup, cpx16 *work, lint *info);
  void zgebrd_(lint *m, lint *n, cpx16 *a, lint *lda, double *d, double *e, cpx16 *tauq, cpx16 *taup, cpx16 *work, lint *lwork, lint *info);
  void zgecon_(char *norm, lint *n, cpx16 *a, lint *lda, double *anorm, double *rcond, cpx16 *work, double *rwork, lint *info);
  void zgeequ_(lint *m, lint *n, cpx16 *a, lint *lda, double *r, double *c, double *rowcnd, double *colcnd, double *amax, lint *info);
  void zgees_(char *jobvs, char *sort, lint *select, lint *n, cpx16 *a, lint *lda, lint *sdim, cpx16 *w, cpx16 *vs, lint *ldvs, cpx16 *work, lint *lwork, double *rwork, lint *bwork, lint *info);
  void zgeesx_(char *jobvs, char *sort, lint *select, char *sense, lint *n, cpx16 *a, lint *lda, lint *sdim, cpx16 *w, cpx16 *vs, lint *ldvs, double *rconde, double *rcondv, cpx16 *work, lint *lwork, double *rwork, lint *bwork, lint *info);
  void zgeev_(char *jobvl, char *jobvr, lint *n, cpx16 *a, lint *lda, cpx16 *w, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgeevx_(char *balanc, char *jobvl, char *jobvr, char *sense, lint *n, cpx16 *a, lint *lda, cpx16 *w, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, lint *ilo, lint *ihi, double *scale, double *abnrm, double *rconde, double *rcondv, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgegs_(char *jobvsl, char *jobvsr, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *alpha, cpx16 *beta, cpx16 *vsl, lint *ldvsl, cpx16 *vsr, lint *ldvsr, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgegv_(char *jobvl, char *jobvr, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *alpha, cpx16 *beta, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgehd2_(lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zgehrd_(lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zgelq2_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zgelqf_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zgels_(char *trans, lint *m, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *work, lint *lwork, lint *info);
  void zgelss_(lint *m, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, double *s, double *rcond, lint *rank, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgelsx_(lint *m, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *jpvt, double *rcond, lint *rank, cpx16 *work, double *rwork, lint *info);
  void zgeql2_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zgeqlf_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zgeqr2_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zgeqrf_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zgerfs_(char *trans, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zgerq2_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zgerqf_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zgesv_(lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zgesvd_(char *jobu, char *jobvt, lint *m, lint *n, cpx16 *a, lint *lda, double *s, cpx16 *u, lint *ldu, cpx16 *vt, lint *ldvt, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zgesvx_(char *fact, char *trans, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, char *equed, double *r, double *c, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zgetf2_(lint *m, lint *n, cpx16 *a, lint *lda, lint *ipiv, lint *info);
  void zgetrf_(lint *m, lint *n, cpx16 *a, lint *lda, lint *ipiv, lint *info);
  void zgetri_(lint *n, cpx16 *a, lint *lda, lint *ipiv, cpx16 *work, lint *lwork, lint *info);
  void zgetrs_(char *trans, lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zggbak_(char *job, char *side, lint *n, lint *ilo, lint *ihi, double *lscale, double *rscale, lint *m, cpx16 *v, lint *ldv, lint *info);
  void zggbal_(char *job, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *ilo, lint *ihi, double *lscale, double *rscale, double *work, lint *info);
  void zggglm_(lint *n, lint *m, lint *p, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *d, cpx16 *x, cpx16 *y, cpx16 *work, lint *lwork, lint *info);
  void zgghrd_(char *compq, char *compz, lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *q, lint *ldq, cpx16 *z, lint *ldz, lint *info);
  void zgglse_(lint *m, lint *n, lint *p, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *c, cpx16 *d, cpx16 *x, cpx16 *work, lint *lwork, lint *info);
  void zggqrf_(lint *n, lint *m, lint *p, cpx16 *a, lint *lda, cpx16 *taua, cpx16 *b, lint *ldb, cpx16 *taub, cpx16 *work, lint *lwork, lint *info);
  void zggrqf_(lint *m, lint *p, lint *n, cpx16 *a, lint *lda, cpx16 *taua, cpx16 *b, lint *ldb, cpx16 *taub, cpx16 *work, lint *lwork, lint *info);
  void zggsvd_(char *jobu, char *jobv, char *jobq, lint *m, lint *n, lint *p, lint *k, lint *l, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, double *alpha, double *beta, cpx16 *u, lint *ldu, cpx16 *v, lint *ldv, cpx16 *q, lint *ldq, cpx16 *work, double *rwork, lint *iwork, lint *info);
  void zggsvp_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, double *tola, double *tolb, lint *k, lint *l, cpx16 *u, lint *ldu, cpx16 *v, lint *ldv, cpx16 *q, lint *ldq, lint *iwork, double *rwork, cpx16 *tau, cpx16 *work, lint *info);
  void zgtcon_(char *norm, lint *n, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *du2, lint *ipiv, double *anorm, double *rcond, cpx16 *work, lint *info);
  void zgtrfs_(char *trans, lint *n, lint *nrhs, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *dlf, cpx16 *df, cpx16 *duf, cpx16 *du2, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zgtsv_(lint *n, lint *nrhs, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *b, lint *ldb, lint *info);
  void zgtsvx_(char *fact, char *trans, lint *n, lint *nrhs, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *dlf, cpx16 *df, cpx16 *duf, cpx16 *du2, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zgttrf_(lint *n, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *du2, lint *ipiv, lint *info);
  void zgttrs_(char *trans, lint *n, lint *nrhs, cpx16 *dl, cpx16 *d, cpx16 *du, cpx16 *du2, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zhbev_(char *jobz, char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *info);
  void zhbevd_(char *jobz, char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *w, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, double *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void zhbevx_(char *jobz, char *range, char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, cpx16 *q, lint *ldq, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *iwork, lint *ifail, lint *info);
  void zhbgst_(char *vect, char *uplo, lint *n, lint *ka, lint *kb, cpx16 *ab, lint *ldab, cpx16 *bb, lint *ldbb, cpx16 *x, lint *ldx, cpx16 *work, double *rwork, lint *info);
  void zhbgv_(char *jobz, char *uplo, lint *n, lint *ka, lint *kb, cpx16 *ab, lint *ldab, cpx16 *bb, lint *ldbb, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *info);
  void zhbtrd_(char *vect, char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *d, double *e, cpx16 *q, lint *ldq, cpx16 *work, lint *info);
  void zhecon_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, double *anorm, double *rcond, cpx16 *work, lint *info);
  void zheev_(char *jobz, char *uplo, lint *n, cpx16 *a, lint *lda, double *w, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zheevd_(char *jobz, char *uplo, lint *n, cpx16 *a, lint *lda, double *w, cpx16 *work, lint *lwork, double *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void zheevx_(char *jobz, char *range, char *uplo, lint *n, cpx16 *a, lint *lda, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, double *rwork, lint *iwork, lint *ifail, lint *info);
  void zhegs2_(lint *itype, char *uplo, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *info);
  void zhegst_(lint *itype, char *uplo, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *info);
  void zhegv_(lint *itype, char *jobz, char *uplo, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, double *w, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zherfs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zhesv_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *work, lint *lwork, lint *info);
  void zhesvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zhetd2_(char *uplo, lint *n, cpx16 *a, lint *lda, double *d, double *e, cpx16 *tau, lint *info);
  void zhetf2_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, lint *info);
  void zhetrd_(char *uplo, lint *n, cpx16 *a, lint *lda, double *d, double *e, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zhetrf_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, cpx16 *work, lint *lwork, lint *info);
  void zhetri_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, cpx16 *work, lint *info);
  void zhetrs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zhgeqz_(char *job, char *compq, char *compz, lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *alpha, cpx16 *beta, cpx16 *q, lint *ldq, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zhpcon_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, double *anorm, double *rcond, cpx16 *work, lint *info);
  void zhpev_(char *jobz, char *uplo, lint *n, cpx16 *ap, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *info);
  void zhpevd_(char *jobz, char *uplo, lint *n, cpx16 *ap, double *w, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, double *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void zhpevx_(char *jobz, char *range, char *uplo, lint *n, cpx16 *ap, double *vl, double *vu, lint *il, lint *iu, double *abstol, lint *m, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *iwork, lint *ifail, lint *info);
  void zhpgst_(lint *itype, char *uplo, lint *n, cpx16 *ap, cpx16 *bp, lint *info);
  void zhpgv_(lint *itype, char *jobz, char *uplo, lint *n, cpx16 *ap, cpx16 *bp, double *w, cpx16 *z, lint *ldz, cpx16 *work, double *rwork, lint *info);
  void zhprfs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zhpsv_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zhpsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zhptrd_(char *uplo, lint *n, cpx16 *ap, double *d, double *e, cpx16 *tau, lint *info);
  void zhptrf_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, lint *info);
  void zhptri_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, cpx16 *work, lint *info);
  void zhptrs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zhsein_(char *side, char *eigsrc, char *initv, lint *select, lint *n, cpx16 *h, lint *ldh, cpx16 *w, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, lint *mm, lint *m, cpx16 *work, double *rwork, lint *ifaill, lint *ifailr, lint *info);
  void zhseqr_(char *job, char *compz, lint *n, lint *ilo, lint *ihi, cpx16 *h, lint *ldh, cpx16 *w, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, lint *info);
  void zlaed0_(lint *qsiz, lint *n, double *d, double *e, cpx16 *q, lint *ldq, cpx16 *qstore, lint *ldqs, double *rwork, lint *iwork, lint *info);
  void zlaed7_(lint *n, lint *cutpnt, lint *qsiz, lint *tlvls, lint *curlvl, lint *curpbm, double *d, cpx16 *q, lint *ldq, double *rho, lint *indxq, double *qstore, lint *qptr, lint *prmptr, lint *perm, lint *givptr, lint *givcol, double *givnum, cpx16 *work, double *rwork, lint *iwork, lint *info);
  void zlaed8_(lint *k, lint *n, lint *qsiz, cpx16 *q, lint *ldq, double *d, double *rho, lint *cutpnt, double *z, double *dlamda, cpx16 *q2, lint *ldq2, double *w, lint *indxp, lint *indx, lint *indxq, lint *perm, lint *givptr, lint *givcol, double *givnum, lint *info);
  void zlatzm_(char *side, lint *m, lint *n, cpx16 *v, lint *incv, cpx16 *tau, cpx16 *c1, cpx16 *c2, lint *ldc, cpx16 *work);
  void zpbcon_(char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *anorm, double *rcond, cpx16 *work, double *rwork, lint *info);
  void zpbequ_(char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *s, double *scond, double *amax, lint *info);
  void zpbrfs_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *afb, lint *ldafb, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zpbstf_(char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, lint *info);
  void zpbsv_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *b, lint *ldb, lint *info);
  void zpbsvx_(char *fact, char *uplo, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *afb, lint *ldafb, char *equed, double *s, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zpbtf2_(char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, lint *info);
  void zpbtrf_(char *uplo, lint *n, lint *kd, cpx16 *ab, lint *ldab, lint *info);
  void zpbtrs_(char *uplo, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *b, lint *ldb, lint *info);
  void zpocon_(char *uplo, lint *n, cpx16 *a, lint *lda, double *anorm, double *rcond, cpx16 *work, double *rwork, lint *info);
  void zpoequ_(lint *n, cpx16 *a, lint *lda, double *s, double *scond, double *amax, lint *info);
  void zporfs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zposv_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *info);
  void zposvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, char *equed, double *s, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zpotf2_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *info);
  void zpotrf_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *info);
  void zpotri_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *info);
  void zpotrs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *info);
  void zppcon_(char *uplo, lint *n, cpx16 *ap, double *anorm, double *rcond, cpx16 *work, double *rwork, lint *info);
  void zppequ_(char *uplo, lint *n, cpx16 *ap, double *s, double *scond, double *amax, lint *info);
  void zpprfs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zppsv_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *b, lint *ldb, lint *info);
  void zppsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, char *equed, double *s, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zpptrf_(char *uplo, lint *n, cpx16 *ap, lint *info);
  void zpptri_(char *uplo, lint *n, cpx16 *ap, lint *info);
  void zpptrs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *b, lint *ldb, lint *info);
  void zptcon_(lint *n, double *d, cpx16 *e, double *anorm, double *rcond, double *rwork, lint *info);
  void zpteqr_(char *compz, lint *n, double *d, double *e, cpx16 *z, lint *ldz, double *work, lint *info);
  void zptrfs_(char *uplo, lint *n, lint *nrhs, double *d, cpx16 *e, double *df, cpx16 *ef, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zptsv_(lint *n, lint *nrhs, double *d, cpx16 *e, cpx16 *b, lint *ldb, lint *info);
  void zptsvx_(char *fact, lint *n, lint *nrhs, double *d, cpx16 *e, double *df, cpx16 *ef, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zpttrf_(lint *n, double *d, cpx16 *e, lint *info);
  void zpttrs_(char *uplo, lint *n, lint *nrhs, double *d, cpx16 *e, cpx16 *b, lint *ldb, lint *info);
  void zspcon_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, double *anorm, double *rcond, cpx16 *work, lint *info);
  void zsprfs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zspsv_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zspsvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *ap, cpx16 *afp, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zsptrf_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, lint *info);
  void zsptri_(char *uplo, lint *n, cpx16 *ap, lint *ipiv, cpx16 *work, lint *info);
  void zsptrs_(char *uplo, lint *n, lint *nrhs, cpx16 *ap, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void zstedc_(char *compz, lint *n, double *d, double *e, cpx16 *z, lint *ldz, cpx16 *work, lint *lwork, double *rwork, lint *lrwork, lint *iwork, lint *liwork, lint *info);
  void zstein_(lint *n, double *d, double *e, lint *m, double *w, lint *iblock, lint *isplit, cpx16 *z, lint *ldz, double *work, lint *iwork, lint *ifail, lint *info);
  void zsteqr_(char *compz, lint *n, double *d, double *e, cpx16 *z, lint *ldz, double *work, lint *info);
  void zsycon_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, double *anorm, double *rcond, cpx16 *work, lint *info);
  void zsyrfs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void zsysv_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *work, lint *lwork, lint *info);
  void zsysvx_(char *fact, char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *af, lint *ldaf, lint *ipiv, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *rcond, double *ferr, double *berr, cpx16 *work, lint *lwork, double *rwork, lint *info);
  void zsytf2_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, lint *info);
  void zsytrf_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, cpx16 *work, lint *lwork, lint *info);
  void zsytri_(char *uplo, lint *n, cpx16 *a, lint *lda, lint *ipiv, cpx16 *work, lint *info);
  void zsytrs_(char *uplo, lint *n, lint *nrhs, cpx16 *a, lint *lda, lint *ipiv, cpx16 *b, lint *ldb, lint *info);
  void ztbcon_(char *norm, char *uplo, char *diag, lint *n, lint *kd, cpx16 *ab, lint *ldab, double *rcond, cpx16 *work, double *rwork, lint *info);
  void ztbrfs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void ztbtrs_(char *uplo, char *trans, char *diag, lint *n, lint *kd, lint *nrhs, cpx16 *ab, lint *ldab, cpx16 *b, lint *ldb, lint *info);
  void ztgevc_(char *side, char *howmny, lint *select, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, lint *mm, lint *m, cpx16 *work, double *rwork, lint *info);
  void ztgsja_(char *jobu, char *jobv, char *jobq, lint *m, lint *p, lint *n, lint *k, lint *l, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, double *tola, double *tolb, double *alpha, double *beta, cpx16 *u, lint *ldu, cpx16 *v, lint *ldv, cpx16 *q, lint *ldq, cpx16 *work, lint *ncycle, lint *info);
  void ztpcon_(char *norm, char *uplo, char *diag, lint *n, cpx16 *ap, double *rcond, cpx16 *work, double *rwork, lint *info);
  void ztprfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx16 *ap, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void ztptri_(char *uplo, char *diag, lint *n, cpx16 *ap, lint *info);
  void ztptrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx16 *ap, cpx16 *b, lint *ldb, lint *info);
  void ztrcon_(char *norm, char *uplo, char *diag, lint *n, cpx16 *a, lint *lda, double *rcond, cpx16 *work, double *rwork, lint *info);
  void ztrevc_(char *side, char *howmny, lint *select, lint *n, cpx16 *t, lint *ldt, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, lint *mm, lint *m, cpx16 *work, double *rwork, lint *info);
  void ztrexc_(char *compq, lint *n, cpx16 *t, lint *ldt, cpx16 *q, lint *ldq, lint *ifst, lint *ilst, lint *info);
  void ztrrfs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *x, lint *ldx, double *ferr, double *berr, cpx16 *work, double *rwork, lint *info);
  void ztrsen_(char *job, char *compq, lint *select, lint *n, cpx16 *t, lint *ldt, cpx16 *q, lint *ldq, cpx16 *w, lint *m, double *s, double *sep, cpx16 *work, lint *lwork, lint *info);
  void ztrsna_(char *job, char *howmny, lint *select, lint *n, cpx16 *t, lint *ldt, cpx16 *vl, lint *ldvl, cpx16 *vr, lint *ldvr, double *s, double *sep, lint *mm, lint *m, cpx16 *work, lint *ldwork, double *rwork, lint *info);
  void ztrsyl_(char *trana, char *tranb, lint *isgn, lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, cpx16 *c, lint *ldc, double *scale, lint *info);
  void ztrti2_(char *uplo, char *diag, lint *n, cpx16 *a, lint *lda, lint *info);
  void ztrtri_(char *uplo, char *diag, lint *n, cpx16 *a, lint *lda, lint *info);
  void ztrtrs_(char *uplo, char *trans, char *diag, lint *n, lint *nrhs, cpx16 *a, lint *lda, cpx16 *b, lint *ldb, lint *info);
  void ztzrqf_(lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, lint *info);
  void zung2l_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zung2r_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zungbr_(char *vect, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zunghr_(lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zungl2_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zunglq_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zungql_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zungqr_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zungr2_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *info);
  void zungrq_(lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zungtr_(char *uplo, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *work, lint *lwork, lint *info);
  void zunm2l_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *info);
  void zunm2r_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *info);
  void zunmbr_(char *vect, char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunmhr_(char *side, char *trans, lint *m, lint *n, lint *ilo, lint *ihi, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunml2_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *info);
  void zunmlq_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunmql_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunmqr_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunmr2_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *info);
  void zunmrq_(char *side, char *trans, lint *m, lint *n, lint *k, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zunmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, cpx16 *a, lint *lda, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *lwork, lint *info);
  void zupgtr_(char *uplo, lint *n, cpx16 *ap, cpx16 *tau, cpx16 *q, lint *ldq, cpx16 *work, lint *info);
  void zupmtr_(char *side, char *uplo, char *trans, lint *m, lint *n, cpx16 *ap, cpx16 *tau, cpx16 *c, lint *ldc, cpx16 *work, lint *info);
}

#endif
